//: interfaces/InterfaceCollision.java
package interfaces;

interface I1
{
    void f();
}

interface I2
{
    int f(int i);
}

interface I3
{
    int f();
}

class C
{
    public int f()
    {
        return 1;
    }
}

class C2 implements I1, I2
{
    public void f()
    {
    }
    
    public int f(int i)
    {
        return 1;
    } // overloaded
}

class C3 extends C implements I2
{
    public int f(int i)
    {
        return 1;
    } // overloaded
}

class C4 extends C implements I3
{
    // Identical, no problem:
    public int f()
    {
        return 1;
    }
}

// Methods differ only by return type:
// ! class C5 extends C implements I1 {}
// ! interface I4 extends I1, I3 {} ///:~
